const { defineConfig } = require('@vue/cli-service')

const timeStamp = new Date().getTime();


const CompressionWebpackPlugin = require('compression-webpack-plugin')

// npm run build 自动设置 process.env.NODE_ENV === 'production'
// npm run serve 则会设置为 devlopment
const isProduction = process.env.NODE_ENV === 'production';
// const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const plugins = [];
let externals = {};

// const cdn = {
//   dev: {
//     css: [], js: []
//   },
//   build: {
//     css: [],
//     js: [
//       'https://cdn.bootcdn.net/ajax/libs/axios/0.27.2/axios.min.js',
//       'https://cdn.bootcss.com/vue/2.6.11/vue.min.js',
//       'https://cdn.bootcss.com/vue-router/3.5.4/vue-router.min.js',
//     ]
//   }
// }
// // const 

// if (isProduction) {
//   // 压缩 混淆 去除注释 console插件
//   plugins.push(new UglifyJsPlugin({
//     uglifyOptions: {
//       output: {
//         comments: false, // 去除注释
//       },
//       warnings: false, // 去除黄色警告,
//       compress: {
//         drop_console: true,
//         drop_debugger: false, // 特定情况需要利用debugger防止调试
//         pure_funcs: ['console.log'], // 移除console.log 避免console.error
//       }
//     }
//   }));

plugins.push(new CompressionWebpackPlugin({
  test: /\.(js|json|css)$/i,  // 图片一般不Gzip压缩 webpack-image-loader
  threshold: 10240, // 只有在10kb以上才压缩
}))

// 附加全局引包的引用关系
// externals = {
//   // from后的 : 使用全局暴露的对象名,具体看包暴露哪个
//   vue: 'Vue',
//   'vue-router': 'VueRouter',
//   axios: 'axios'
// }

// }

//productionSourceMap
//打包优化
module.exports = defineConfig({
  publicPath: './',
  assetsDir: 'assets',
  indexPath: 'index.html',
  filenameHashing: true,
  // pages: {
  //   index: {
  //     entry: 'src/main.js',
  //     template: 'public/index.html',
  //     filename: 'index.html'
  //   }
  // },
  productionSourceMap: !isProduction,
  transpileDependencies: true,
  configureWebpack: {
    devServer: {
      open: true,

      // proxy:{
      //   '/api':{
      //     target: 'http://118.25.146.173:5004',

      //     // 'http://1.116.64.64:5004',
      //     changeOrigin:true,
      //   }
      // }
    },
    // output: { // 把应用打包成umd库格式
    //   library: 'myLibrary', // 输出重构  打包编译后的文件名称  【模块名称.时间戳】
    //   filename: `[name].${timeStamp}.js`,
    //   // libraryTarget: 'umd',
    //   globalObject: 'this',
    // },
    plugins,
    // externals
  },
  // chainWebpack: config => {
  //   // html-webpack-plugin
  //   config.plugin('html').tap(args => {
  //     if (isProduction) {
  //       args[0].cdn = cdn.build
  //     } else {
  //       args[0].cdn = cdn.dev;
  //     }
  //     return args;
  //   });
  // }
})
